package com.shiliuzi.www.mapper;

import com.shiliuzi.www.pojo.bo.LimitBo;
import com.shiliuzi.www.pojo.dto.revoke.*;
import com.shiliuzi.www.pojo.po.Cancel;
import com.shiliuzi.www.pojo.po.Record;
import com.shiliuzi.www.pojo.po.RecordType;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
@Mapper
public interface RevokeMapper {
    /**
     * 查询记录
     * @return
     */
    List<Record>selRecord(@Param("record") Record record, @Param("recordType") RecordType recordType, @Param("identity") Integer identity );

    int insRevoke(@Param("revokeSetDto") RevokeSetDto revokeSetDto);

    int updRevoke(@Param("revokeSetDto") RevokeSetDto revokeSetDto);

    int delRevoke(List<Integer> idList);

    int insCancelRecord(@Param("cancel") Cancel cancel);

    /**
     * 管理员分页查询申诉记录
     * @param limitBo
     * @return
     */
    List<Record> obtainCancelRecord(LimitBo limitBo);

    /**
     * 管理员获取相应类型的总数
     * @param cancelRecordGetDto
     * @return
     */
    Integer obtainRecordPage(CancelRecordGetDto cancelRecordGetDto);

    /**
     * 成员进行申述撤销奖惩记录
     * @param infoRecordDto
     * @return
     */
    Integer infoCancelRecord(InfoRecordDto infoRecordDto);

    /**
     * 管理员获取奖惩类型
     * @param limitBo
     * @return
     */
    List<RecordType> obtainRecordClass(LimitBo limitBo);

    /**
     * 管理员获取奖惩类型的总数
     * @param classGetDto
     * @return
     */
    Integer obtainRecordClassPage(RecordClassGetDto classGetDto);

    /**
     * 管理员添加奖惩类型
     * @param recordClassSetDto
     * @return
     */
    Integer setRecordClass(RecordClassSetDto recordClassSetDto);

    /**
     * 管理员修改奖惩类型
     * @param recordClassUpdateDto
     * @return
     */
    Integer updateRecordClass(RecordClassUpdateDto recordClassUpdateDto);

    /**
     * 管理员禁用或启用奖惩类型
     * @param recordClassBanDto
     * @return
     */
    Integer banOrRecoverRevokeClass(RecordClassBanDto recordClassBanDto);

    /**
     * 管理员删除奖惩类型
     * @param recordClassDelDto
     * @return
     */
    Integer deleteRecordClass(RecordClassDelDto recordClassDelDto);

    /**
     * 管理员删除奖惩类型之后，更改其余类型进行替代
     * @param recordClassDelDto
     * @return
     */
    Integer updateDelRecordClass(RecordClassDelDto recordClassDelDto);
}
